#ifndef _E_SCENE_MANAGER_H_
#define _E_SCENE_MANAGER_H_

#include "EScene.h"
#include "EEntityManager.h"

#include "eH.h"
namespace engine
{
class ESceneObject;
class EScreen;

class ESceneManager : public EEntityManager
{
  typedef map<const string, EScene*>    ESceneMap;

  ESceneMap         m_mapScenes;
  SceneManager*     m_pOgreSceneManager;
  EScene*           m_pCurrentScene;

public:
  ESceneManager();
  ~ESceneManager();
          void           setOgreSceneManager    ( SceneManager& sceneManager );
  inline  EScene*        getCurrentScene        () const { return m_pCurrentScene; }
          bool           setCurrentScene        ( const string& sName );
  virtual bool           update                 ( const EGameTime& time );
  virtual bool           startGame              ();
  virtual bool           updateGame             ( const EGameTime& time );
  virtual bool           endGame                ();
          EScene*        createScene            ( const string& sName, const ESceneDesc& sceneDesc );
          void           destroyScene           ( const string& sName );

          SceneManager*  getOgreSceneManager    () const { return m_pOgreSceneManager; }
};

} // end namespace

#endif